home *** CD-ROM | disk | FTP | other *** search
/ SPACE 2 / SPACE - Library 2 - Volume 1.iso / demos / 108 / modula / makefore.mod < prev    next >
Encoding:
Modula Implementation  |  1987-02-20  |  2.2 KB  |  73 lines

  1. IMPLEMENTATION MODULE MakeForest;
  2.  
  3.   (*
  4.    * MAKEMAKE.  Create a MAKEFILE for a MODULA-2 program.
  5.    *
  6.    * Written by Steve Tynor, 30 September 1986.
  7.    *            UUCP  : tynor@gitpyr
  8.    *            USNAIL: 2550 Akers Mill Rd. T-2, Atlanta GA. 30339
  9.    *
  10.    * Permission is granted to distribute, copy and change this program as long
  11.    * as this notice remains...
  12.    *)
  13.  
  14. IMPORT Strings;
  15. FROM   Storage IMPORT ALLOCATE;
  16.  
  17.   (*----------------------------------------------------------------------*)
  18.   PROCEDURE FindFile (VAR fname          : ARRAY OF CHAR; 
  19.                       VAR fileDefinition : FileDefinitionList);
  20.   VAR
  21.     found : BOOLEAN;
  22.   BEGIN
  23.     fileDefinition := FileForest;
  24.     found := FALSE;
  25.     WHILE (fileDefinition <> NIL) AND (NOT found) DO
  26.       found := Strings.Compare (fname, fileDefinition^.filename) 
  27.                             = Strings.Equal;
  28.       IF NOT found THEN
  29.         fileDefinition := fileDefinition^.next;
  30.       END; (* IF *)
  31.     END; (* WHILE *)
  32.   END FindFile;
  33.  
  34.  
  35.   (*----------------------------------------------------------------------*)
  36.   PROCEDURE AddFile (VAR fname          : ARRAY OF CHAR; 
  37.                      VAR fileDefinition : FileDefinitionList) : BOOLEAN;
  38.   BEGIN
  39.     FindFile (fname, fileDefinition);
  40.     IF fileDefinition = NIL THEN
  41.       NEW (fileDefinition);
  42.       Strings.Assign (fileDefinition^.filename, fname);
  43.       fileDefinition^.next    := FileForest;
  44.       fileDefinition^.imports := NIL;
  45.       IF FileForest = NIL THEN
  46.         FileForestEnd := fileDefinition;
  47.       END; (* IF *)
  48.       FileForest      := fileDefinition;
  49.       RETURN TRUE;
  50.     ELSE
  51.       RETURN FALSE;
  52.     END; (* IF *)
  53.   END AddFile;
  54.  
  55.  
  56.   (*----------------------------------------------------------------------*)
  57.   PROCEDURE AddImport (VAR fileDefinition :  FileDefinitionList;
  58.                        VAR fname          : ARRAY OF CHAR ); 
  59.   VAR
  60.     iPtr : ImportList;
  61.   BEGIN
  62.     NEW (iPtr);
  63.     iPtr^.next              := fileDefinition^.imports;
  64.     fileDefinition^.imports := iPtr;
  65.     IF AddFile (fname, iPtr^.file) THEN END;
  66.   END AddImport;
  67.  
  68.  
  69. BEGIN
  70.   FileForest := NIL;
  71.   FileForestEnd := NIL;
  72. END MakeForest.
  73.